from OrderDispatch.OrderDispatchInterface import OrderDispatchInterface


class SimpleOrderDispatchInterfaceImpl(OrderDispatchInterface):
    """
    SimpleOrderDispatchInterfaceImpl 是 OrderDispatchInterface 的一个简单实现
    它按照顺序将订单分配给机器人，如果订单数量多于机器人数量，剩余订单不做分配。
    """

    def dispatch_orders_to_robots(self, order_list, robot_list):
        """
        将订单按顺序分配给机器人，直到没有机器人或没有订单为止。
        :param order_list: 待分配的订单列表，每个订单包含订单相关信息（如ID、开始位置、结束位置等）。
        :param robot_list: 可用的机器人列表，每个机器人包含机器人相关信息（如ID、位置等）。
        :return: 返回分配结果，映射为 {机器人ID: 订单ID} 的字典。
        """
        result = {}  # 存储机器人和订单的分配结果
        num_orders = len(order_list)
        num_robots = len(robot_list)

        # 遍历订单和机器人，按顺序进行分配
        for i in range(min(num_orders, num_robots)):
            robot = robot_list[i]
            order = order_list[i]
            result[robot.robot_id] = order.order_id

        return result
